# Window Manager Configuration Audit Date: 2026-10-16. Scope: Openbox, bspwm, i3, Sway, Awesome, Qtile, Herbstluftwm, Fluxbox, IceWM, and Enlightenment integration files. Includes package profiles, hooks, user and system configuration, shortcuts, panels, menus, and shared scripts. Earlier network/printer changes remain in the same local work set. ## Issues Fixed | Component | Fixes | | --- | --- | | Sessions | Conditional launcher reuses the existing D-Bus bus; hooks accept absolute paths, preserve arguments, and migrate configurations previously wrapped in `dbus-run-session`. IceWM handles both possible session filenames. | | Common startup | Launcher uses `flock` to prevent concurrent starts; tray helper no longer searches other processes' command lines for any occurrence of the program name. | | Openbox | Shared PolicyKit agent; Tint2 autostart removal is limited to the Openbox hook and no longer affects other images through the cache script. | | bspwm | Removed obsolete sxhkd `bspc pointer` shortcuts that captured the same buttons as `pointer_actionN`; native move/resize controls remain. Polybar now has a real tray. | | i3 | Reload no longer repeatedly launches the compositor, notifications, or Conky; tray also works when no monitor is marked primary. Removed shortcut that interfered with Super + right-click resize. | | Sway | Fixed region capture with Slurp/Grim; Waybar starts without incorrectly splitting commands at `;`. Shared session menu in the panel; network indicator, USB, and startup notifier. PolicyKit agent installed; lock before suspend and D-Bus activation environment updated. Native mouse resize remains. | | Herbstluftwm | POSIX expressions replace unsupported `(?i)`; removed Super+H conflict, repeated tray-helper invocation, and global daemon restarts. Polybar now has a tray. | | Fluxbox | Snapping uses the existing `ResizeTo` command and `TopLeft`/`TopRight` anchors. Enabled local remote actions used to exit/reconfigure the session. | | IceWM | Fixed ignored preference names: `SnapMove`, `TaskBarShowMailboxStatus`, `TaskBarShowCPUStatus`, and `TaskBarShowWindowListMenu`. Removed nonexistent height/quick-switch options; height remains in the theme. Browser no longer depends on `x-www-browser`. | | Awesome | PolicyKit agent starts with the session; avoids running Dunst alongside Awesome's native notifications; dialogs float by type. Compositor/Conky use the shared launcher. | | Qtile | PolicyKit agent starts with the session; applications can request fullscreen. Compositor/notifications/Conky use the shared launcher. | | Enlightenment | Reviewed supplied files, retaining native window management, menus, and notifications. Session uses the same conditional D-Bus launcher. | | Menus | Honor `OnlyShowIn`, `NotShowIn`, `TryExec`, and `LC_ALL`. `.desktop` code expansion preserves arguments with spaces, names, icons, paths, and literal percent signs. | | Audio and session | WM handles multimedia keys without competing Volumeicon shortcuts. Session menu limits process searches/signals to the user and prefers current-session IPC; Wayland locking has priority. | ## Validation Performed - Full pytest suite, including concurrency, session-file migration, menu arguments/visibility, image composition, and wsdd socket tests. - Shell script and hook syntax, Python and XML checks; comparison of duplicate skel/XDG defaults where they should match. - Native parsers from cached Void packages: i3 4.25.1, Awesome 4.3, and Sway 1.12. Sway was checked with the headless backend, Pixman renderer, and local wallpaper equivalent to the installed ISO path. - Herbstluftwm 0.9.6 and bspwm 0.9.12: settings/rules applied through IPC in a private Xvfb session, without starting autostart programs. - Openbox 3.6.1: private startup with Pepvoid configuration and theme. - IceWM 4.0: preferences loaded by native parser. Fluxbox 1.3.7: native command inventory and private startup with temporary copies. Missing resources/defaults in the test environment are not syntax errors in the image. - Qtile: Python syntax and API review against cached package 0.37.1; no full Qtile session was run. Enlightenment: integration files reviewed; no full session was run. ## Validation Requiring a Real Graphical Image This audit does not prove the absence of all bugs or replace testing every ISO. The full login/logout, reload, authentication, click/drag, multi-monitor, suspend/resume, and tray-application paths still need testing on real hardware. Audio, battery, Bluetooth, Windows discovery, and printing require available devices/network. Priorities for that test: start each WM, reload it twice and confirm there is only one instance of each applet/panel; move/resize windows; authenticate in an administrative prompt; test sound and suspend; open an SMB share and print a test page. Network steps are also documented in `docs/network-shares-and-printing.md`.